package demo.security.example.web.filter;

import javax.servlet.*;
import java.io.IOException;

/**
 * TimeFilter
 *
 * @author lidj
 * @date 2018-01-09
 */

/**
 * @Component
 * 在该filter上加一个@Component注解就可以把这个filter加入到容器中
 *
 * 但是，对于第三方的filter（或者第三方的其他类）
 * 我们不可能在别人源代码上去加注解（如果原类没有这个注解）
 * 怎么办呢？ --比如该例我不加这个注解
 * 那么就需要一个由@Configuration的类来配置它
 * 详见WebConfig类
 */

public class TimeFilter implements Filter{
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("time filter init");
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("time filter start");
        long start = System.currentTimeMillis();
        filterChain.doFilter(servletRequest,servletResponse);
        System.out.println("time filter:"+(System.currentTimeMillis() - start));
        System.out.println("time filter finish");
    }

    @Override
    public void destroy() {
        System.out.println("time filter destroy");
    }
}
